package utils

import (
	"cade/src/game/msg"
)

// ============================================================================

var iplrmgr IPlayerMgr

// ============================================================================

type IPlayer interface {
	SendMsg(message msg.Message)
}

type IPlayerMgr interface {
	FindIPlayer(uid string) interface{}
	FindIPlayerByName(name string) interface{}
	ForEachOnlineIPlayer(f func(plr interface{}))
}

// ============================================================================

func FindPlayer(uid string) interface{} {
	plr := iplrmgr.FindIPlayer(uid)
	if plr == nil {
		return nil
	} else {
		return plr
	}
}

func FindPlayerByName(name string) interface{} {
	plr := iplrmgr.FindIPlayerByName(name)
	if plr == nil {
		return nil
	} else {
		return plr
	}
}

func ForEachOnlinePlayer(f func(plr interface{})) {
	iplrmgr.ForEachOnlineIPlayer(f)
}

func BroadcastPlayers(message msg.Message) {
	iplrmgr.ForEachOnlineIPlayer(func(plr interface{}) {
		plr.(IPlayer).SendMsg(message)
	})
}
